
package kr.makjang.lib.util;

/**
 * @date 2011.11.16
 * @author FatInDesitny
 * @package kr.makjang.lib.util
 * @content 편의성을 위한 Log 표시 Class
 */

import android.util.Log;

public class MakLog {
    public static final int LEVEL_RELEASE = 0x01; // Release Level

    public static final int LEVEL_DEBUG = 0x02; // Debug Level

    private static String mTag = "MAKJANG";

    private static int mLevel = 0x01;

    private static MakLog mThis = new MakLog();

    private MakLog() {

    }

    /**
     * 로그 표시할 레벨 설정
     * <table>
     * <tr>
     * <td><font face="Arial"><b>Summary</b></font></td>
     * <td><font face="Arial"><b>Constants</b></font></td>
     * </tr>
     * <tr>
     * <td><i><b>LEVEL_RELEASE</b></i></td>
     * <td>LEVEL_RELEASE 버전의 로그 표시</td>
     * </tr>
     * <tr>
     * <td><i><b>LEVEL_DEBUG</b></i></td>
     * <td>LEVEL_RELEASE, LEVEL_DEBUG 버전의 로그 표시</td>
     * </tr>
     * </table>
     * 
     * @param level
     * @return
     */
    public static MakLog setLevel(int level) {
        mLevel = level;
        return mThis;
    }

    /**
     * 로그 표시할 테그 설정
     * <table>
     * <tr>
     * <td><font face="Arial"><b>Summary</b></font></td>
     * <td><font face="Arial"><b>Constants</b></font></td>
     * </tr>
     * <tr>
     * <td><i><b>Default Tag</b></i></td>
     * <td>MAKJANG</td>
     * </tr>
     * </table>
     * 
     * @param tag
     * @return
     */
    public static MakLog setTag(String tag) {
        if (tag != null)
            mTag = tag;
        return mThis;
    }

    /**
     * Log.d 표시
     * 
     * @param level LEVEL_RELEASE, LEVEL_DEBUG : 표시 레벨 설정
     * @param params 표시 내용
     */
    public static void d(int level, String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= level) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.d(mTag, tempParam);
        }
    }

    public static void d1(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_RELEASE) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.d(mTag, tempParam);
        }
    }

    public static void d2(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_DEBUG) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.d(mTag, tempParam);
        }
    }

    /**
     * Log.i 표시
     * 
     * @param level LEVEL_RELEASE, LEVEL_DEBUG : 표시 레벨 설정
     * @param params 표시 내용
     */
    public static void i(int level, String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= level) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.i(mTag, tempParam);
        }
    }

    public static void i1(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_RELEASE) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.i(mTag, tempParam);
        }
    }

    public static void i2(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_DEBUG) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.i(mTag, tempParam);
        }
    }

    /**
     * Log.w 표시
     * 
     * @param level LEVEL_RELEASE, LEVEL_DEBUG : 표시 레벨 설정
     * @param params 표시 내용
     */
    public static void w(int level, String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= level) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.w(mTag, tempParam);
        }
    }

    public static void w1(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_RELEASE) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.w(mTag, tempParam);
        }
    }

    public static void w2(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_DEBUG) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.w(mTag, tempParam);
        }
    }

    /**
     * Log.e 표시
     * 
     * @param level LEVEL_RELEASE, LEVEL_DEBUG : 표시 레벨 설정
     * @param params 표시 내용
     */
    public static void e(int level, String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= level) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.e(mTag, tempParam);
        }
    }

    public static void e1(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_RELEASE) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.e(mTag, tempParam);
        }
    }

    public static void e2(String... params) {
        String tempParam = null;
        int i = 0;

        if (MakLog.mLevel >= MakLog.LEVEL_DEBUG) {
            while (i < params.length) {
                if (i == 0) {
                    tempParam = params[i];
                } else {
                    tempParam += "," + params[i];
                }
                i++;
            }

            Log.e(mTag, tempParam);
        }
    }
} // end of class LogView
